01
内存管理概述
为什么需要动态内存?栈与堆的区别。
基础核心概念
02
malloc函数
函数原型、参数与返回值、基本用法。
分配堆
03
calloc函数
函数原型、与malloc的区别、初始化特性。
清零数组
04
realloc函数
函数原型、调整内存大小、注意事项。
扩容缩容
05
free函数
函数原型、释放内存、避免重复释放。
释放安全
06
内存泄漏
什么是内存泄漏、常见场景、检测工具。
泄漏Valgrind
07
野指针
产生原因、危害、如何避免。
悬空未定义
08
内存碎片
内部碎片与外部碎片、碎片化管理。
碎片性能
09
void*指针
通用指针类型、类型转换、注意事项。
泛型强制转换
10
内存对齐
对齐原理、alignof/alignas、结构体对齐。
对齐结构体
11
柔性数组
结构体中的柔性数组成员、用法与优势。
C99变长
12
自定义内存池
池化思想、简单实现、性能对比。
池化高效
13
内存分配器原理
ptmalloc、tcmalloc、jemalloc简介。
分配器并发
14
栈内存与alloca
栈上动态分配、生命周期、风险。
栈alloca
15
内存映射mmap
文件映射与匿名映射、大块内存分配。
mmap大页
16
共享内存
进程间通信、shmget/shmat、同步问题。
IPC同步
17
内存屏障
编译器屏障与CPU屏障、volatile关键字。
屏障乱序
18
智能指针(C风格)
引用计数、手动实现、RAII思想。
RAII引用计数
19
内存调试工具
Valgrind、AddressSanitizer、GDB。
调试ASan
20
内存安全
缓冲区溢出、堆溢出、栈溢出防护。
安全溢出
21
内存池进阶
定长分配器、伙伴算法、slab分配器。
slab伙伴
22
内存压缩与GC
标记-清除、复制算法、分代收集。
GC压缩
23
持久化内存
NVM、pmem库、编程模型。
NVM持久化
24
内存序与原子操作
memory_order、CAS、无锁编程。
原子无锁
25
内存性能分析
缓存命中率、TLB、预取指令。
性能缓存
26
内存错误检测
ASAN、UBSan、MSan使用。
Sanitizer检测
27
内存分配策略
首次适应、最佳适应、最差适应。
策略算法
28
内存回收策略
延迟释放、垃圾回收、引用计数。
回收GC
29
内存管理最佳实践
编码规范、代码审查、测试。
规范实践
30
综合实战
实现一个简易内存分配器。
项目分配器